Tutorial step 2: creating the FilterDefinition struct |
Every VirtualDub filter has a FilterDefinition struct of this format:
typedef struct FilterDefinition {
struct FilterDefinition *next, *prev;
FilterModule *module;
char * name;
char * desc;
char * maker;
void * private_data;
int inst_data_size;
FilterInitProc initProc;
FilterDeinitProc deinitProc;
FilterRunProc runProc;
FilterParamProc paramProc;
FilterConfigProc configProc;
FilterStringProc stringProc;
FilterStartProc startProc;
FilterEndProc endProc;
CScriptObject *script_obj;
FilterScriptStrProc fssProc;
} FilterDefinition;
This structure tells VirtualDub how to present the filter to the user and how to invoke it. These are the necessary fields:
The next, prev, module, and private_data members are for VirtualDub's internal use, and should be initialized to NULL.
Creating the FilterDefinition for our filter |
We only support one function, and need no instance data, so our structure is fairly simple:
struct FilterDefinition filterDef_tutorial = {
NULL, NULL, NULL, // next, prev, module
"tutorial", // name
"Emphasizes green and de-emphasizes blue in the image.",
// desc
"anyone", // maker
NULL, // private_data
0, // inst_data_size
NULL, // initProc
NULL, // deinitProc
tutorialRunProc, // runProc
NULL, // paramProc
NULL, // configProc
NULL, // stringProc
NULL, // startProc
NULL, // endProc
NULL, // script_obj
NULL, // fssProc
};
We're done. Later on, we'll fill in other fields as we need them, but for a simple pixel-level filter, this is all we need.
back to main page
tutorial[1]: creating the main routine
tutorial[3]: building the DLL and testing the module
VirtualDub external filter SDK 1.05 | ©1999-2001 Avery Lee <phaeron@virtualdub.org> |